home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Linux / Linux Mint 3.0 Light / LinuxMint-3.0-Light.iso / casper / filesystem.squashfs / etc / init.d / mtab.sh < prev    next >
Encoding:
Linux/UNIX/POSIX Shell Script  |  2006-10-06  |  2.6 KB  |  143 lines

  1. #! /bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides:          mtab
  4. # Required-Start:    mountall
  5. # Required-Stop:
  6. # Default-Start:     S
  7. # Default-Stop:
  8. # Short-Description: Update mtab file.
  9. # Description:       Update the mount program's mtab file after
  10. #                    all local filesystems have been mounted.
  11. ### END INIT INFO
  12.  
  13. PATH=/lib/init:/sbin:/bin
  14. TTYGRP=5
  15. TTYMODE=620
  16. [ -f /etc/default/devpts ] && . /etc/default/devpts
  17.  
  18. TMPFS_SIZE=
  19. [ -f /etc/default/tmpfs ] && . /etc/default/tmpfs
  20.  
  21. KERNEL="$(uname -s)"
  22.  
  23. . /lib/lsb/init-functions
  24. . /lib/init/mount-functions.sh
  25.  
  26. domtab ()
  27. {
  28.     # Directory present?
  29.     if [ ! -d $2 ]
  30.     then
  31.         return
  32.     fi
  33.  
  34.     # Not mounted?
  35.     if ! mountpoint -q $2
  36.     then
  37.         return
  38.     fi
  39.  
  40.     if [ -n "$3" ]
  41.     then
  42.         NAME="$3"
  43.     else
  44.         NAME="$1"
  45.     fi
  46.  
  47.     # Already recorded?
  48.     if ! grep -E -sq "^([^ ]+) +$2 +" /etc/mtab
  49.     then
  50.         mount -f -t $1 $OPTS $4 $NAME $2
  51.     fi
  52. }
  53.  
  54. do_start () {
  55.     DO_MTAB=""
  56.     MTAB_PATH="$(readlink -f /etc/mtab || :)"
  57.     case "$MTAB_PATH" in
  58.       /proc/*)
  59.         # Assume that /proc/ is not writable
  60.         ;;
  61.       /*)
  62.         # Only update mtab if it is known to be writable
  63.         # Note that the touch program is in /usr/bin
  64.         #if ! touch "$MTAB_PATH" >/dev/null 2>&1
  65.         #then
  66.         #    return
  67.         #fi
  68.         ;;
  69.       "")
  70.         [ -L /etc/mtab ] && MTAB_PATH="$(readlink /etc/mtab)"
  71.         if [ "$MTAB_PATH" ]
  72.         then
  73.             log_failure_msg "Cannot initialize ${MTAB_PATH}."
  74.         else
  75.             log_failure_msg "Cannot initialize /etc/mtab."
  76.         fi
  77.         ;;
  78.       *)
  79.         log_failure_msg "Illegal mtab location '${MTAB_PATH}'."
  80.         ;;
  81.     esac
  82.  
  83.     #
  84.     # Initialize mtab file if necessary
  85.     #
  86.     if [ ! -f /etc/mtab ]
  87.     then
  88.         :> /etc/mtab
  89.         chmod 644 /etc/mtab
  90.     fi
  91.     if selinux_enabled && which restorecon >/dev/null 2>&1 && [ -r /etc/mtab ]
  92.     then
  93.         restorecon /etc/mtab
  94.     fi
  95.  
  96.     # S01mountkernfs.sh
  97.     domtab proc /proc "proc" -onodev,noexec,nosuid
  98.     domtab sysfs /sys "sys" -onodev,noexec,nosuid
  99.     domtab tmpfs /var/run "varrun" -omode=0755,nodev,noexec,nosuid
  100.     domtab tmpfs /var/lock "varlock" -omode=1777,nodev,noexec,nosuid
  101.     domtab usbfs /proc/bus/usb "procbususb"
  102.  
  103.     # S10udev
  104.     domtab tmpfs /dev "udev" -omode=0755
  105.  
  106.     # S02mountdevsubfs
  107.     SHM_OPT=
  108.     [ "${SHM_SIZE:=$TMPFS_SIZE}" ] && SHM_OPT="-osize=$SHM_SIZE"
  109.     domtab tmpfs /dev/shm "devshm" $SHM_OPT
  110.     domtab devpts /dev/pts "devpts" -ogid=$TTYGRP,mode=$TTYMODE
  111.  
  112.     # S07linux-restricted-modules-common
  113.     exec 9<&0 0</proc/mounts
  114.     while read FDEV FDIR FTYPE FOPTS REST
  115.     do
  116.         case "$FDIR" in
  117.             /lib/modules/*/volatile)
  118.                 domtab "$FTYPE" "$FDIR" "lrm"
  119.                 ;;
  120.         esac
  121.     done
  122.     exec 0<&9 9<&-
  123. }
  124.  
  125. case "$1" in
  126.   start|"")
  127.     do_start
  128.     ;;
  129.   restart|reload|force-reload)
  130.     echo "Error: argument '$1' not supported" >&2
  131.     exit 3
  132.     ;;
  133.   stop)
  134.     # No-op
  135.     ;;
  136.   *)
  137.     echo "Usage: mountall-mtab.sh [start|stop]" >&2
  138.     exit 3
  139.     ;;
  140. esac
  141.  
  142. :
  143.